#ifndef __KAART_ACHTERUIT_H__
#define __KAART_ACHTERUIT_H__

#include "Kaart.h"
#include "Spel.h"
#include "Robot.h"
//! De "1-stap achteruit"-kaarten



class KaartAchteruit : public Kaart
{
public:
	KaartAchteruit(){}

	void bestuurRobot(Robot* robot, Spel* spel)
	{
		Positie achter = robot->achter();
		Robot* bezetter = spel->getBezetter( achter.x, achter.y );
		if( bezetter == NULL || duwRobot(bezetter,static_cast<Rotatie>( (robot->getRotatie() + 2)%4), spel ) );
		{
			const Vakje* vak = spel->getMap()->getVakje(achter.x, achter.y);
			if( vak == NULL )
				spel->destroy( robot ); // van het bord af
			else if( !vak->isObstakel() )
			{
				robot->setPositie( achter.x, achter.y );
				vak->pasSchadeAan( robot );
			}
		}
	}

	void project(Robot* robot, const Spel* spel) const
	{
		Positie achter = robot->achter();
		const Vakje* vak = spel->getMap().getVakje(achter.x, achter.y);
		if( vak == NULL )
			robot->setSchade(9);
		else if( !vak->isObstakel() )
		{
			robot->setPositie( achter.x, achter.y );
			vak->pasSchadeAan( robot );
		}
	}
};

#endif
